


function getJson(url) {

    return new Promise((resolve, reject) => {
        //? 1.实例化
        let xhr = new XMLHttpRequest()
        //? 2.打开url
        xhr.open('Get',url)
        //? 3.响应监听
        xhr.onreadystatechange = function () {
            /*
            ? readyState表示请求的状态
            ? 1. 0 - 未初始化：XMLHttpRequest对象已创建，但尚未调用open()方法。
            ? 2. 1 - 打开：已经调用open()方法，但尚未调用send()方法。
            ? 3. 2 - 发送：已经调用send()方法，但尚未接收到响应。
            ? 4. 3 - 接收：已经接收到部分响应数据。
            ? 5. 4 - 完成：已经接收到全部响应数据，并且可以在客户端使用。
             */
            //? 未完成状态 中断
            if (this.readyState !== 4) return
            //? 成功响应状态码
            if (this.status >= 200 && this.status < 400) {
                //? 存入响应
                resolve(this.response)
            }
            //? 失败响应状态码 抛出状态文本
            else {
                reject(new Error(this.statusText))
            }
        }
        //? 4.设置响应数据类型
        xhr.setRequestHeader('Accept', "application/json")
        //? 5.发送http请求
        xhr.send()
    })

}
